#include <bits/stdc++.h>

using namespace std;

// 定义路口结构体
struct Intersection {
    int x;  // 向方向X行走到达的路口编号
    int y;  // 向方向Y行走到达的路口编号
    int type;  // 路口类型
};

// 广度优先搜索函数，计算从A和B出发的路口独特度
int bfs(const vector<Intersection> &intersections, int A, int B) {
    queue<pair<int, int>> q;  // 队列用于广度优先搜索
    vector<vector<bool>> visited(intersections.size(), vector<bool>(intersections.size(), false));  // 标记数组，记录是否已经访问过

    q.push({A, B});  // 将起点A和B加入队列
    visited[A][B] = true;  // 标记起点为已访问
    int steps = 0;  // 步数

    while (!q.empty()) {
        int size = q.size();  // 当前层的节点数量
        for (int i = 0; i < size; ++i) {
            auto [curA, curB] = q.front();
            q.pop();

            // 如果当前两个路口类型不同，返回步数
            if (intersections[curA].type != intersections[curB].type) {
                return steps;
            }

            // 尝试向X方向走
            int nextA_X = intersections[curA].x;
            int nextB_X = intersections[curB].x;
            if (!visited[nextA_X][nextB_X]) {
                q.push({nextA_X, nextB_X});
                visited[nextA_X][nextB_X] = true;
            }

            // 尝试向Y方向走
            int nextA_Y = intersections[curA].y;
            int nextB_Y = intersections[curB].y;
            if (!visited[nextA_Y][nextB_Y]) {
                q.push({nextA_Y, nextB_Y});
                visited[nextA_Y][nextB_Y] = true;
            }
        }
        steps++;  // 步数加1
    }

    return -1;  // 无法判断，返回-1
}

int main() {
    int T;
    cin >> T;  // 读取数据组数

    while (T--) {
        int n, A, B;
        cin >> n >> A >> B;  // 读取路口数量、起点A和起点B

        vector<Intersection> intersections(n);  // 存储所有路口信息
        for (int i = 0; i < n; ++i) {
            cin >> intersections[i].x >> intersections[i].y >> intersections[i].type;  // 读取每个路口的信息
        }

        int result = bfs(intersections, A, B);  // 调用广度优先搜索函数计算路口独特度
        if (result == -1) {
            cout << "GG" << endl;  // 无法判断，输出GG
        } else {
            cout << result << endl;  // 输出最少步数
        }
    }

    return 0;
}